package main

import (
	maker2 "api/libs/maker"
	"gitee.com/dreamwood/ez-maker/maker"
)

func main() {
	maker2.Prepare()
	ItemMain()
	InLog()
	OutLog()
	IOType()
	Department()
}

func ItemMain() {
	c := maker.CreateTable("ItemMain", "仓库主数据库", "wms")

	//sku相关设置
	c.AddManyToOne("item", "物品", "ItemSku")
	c.AddText("skuText", "SKU字符串")
	c.AddText("skuCode", "SKU码")
	c.AddFloat("num", "剩余库存")
	c.AddText("note", "备注")
	c.AddFiles("pics", "图片")

	c.Generate()
}

// InLog 入库记录,原来是当做出入库记录使用的，后来决定把出库记录单独拿出来做
func InLog() {
	c := maker.CreateTable("InLog", "入库记录", "wms")
	c.AddText("sn", "单号")
	c.AddManyToOne("item", "物品", "ItemSku")
	c.AddManyToOne("type", "入库类型", "IOType")
	c.AddBool("isCanceled", "是否冲红")

	c.AddFloat("numIn", "入库数量")
	c.AddFloat("numOut", "出库数量")
	c.AddFloat("numLeft", "剩余数量")

	c.AddText("batchCode", "批次号")
	c.AddFloat("batchPrice", "批次价格").SetDesc("本批次下该产品的平均价格，由于会出现无限不循环小数，所以这里是一个不准确的数值，在本批次数量不能清零的情况下，出库按照这个价格计算成本")
	c.AddFloat("cost", "总价值").SetDesc("该批次下的总价值，在清零时按照总价值 - 已出库数量 * 批次价格，计算成本")

	c.AddText("heapCode", "堆号").SetDesc("由于同一批次下，多个库位分裂而产生的唯一编码")
	c.AddText("pos", "库位号")

	c.AddText("supplier", "供应商")
	c.AddText("brand", "品牌")
	c.AddArt("note", "备注")

	c.AddCreateAt()
	c.AddCreateBy()

	c.Generate()
}

// OutLog 出库记录
func OutLog() {
	c := maker.CreateTable("OutLog", "出库记录", "wms")
	c.AddText("sn", "单号")
	c.AddManyToOne("item", "物品", "ItemSku")
	c.AddManyToOne("type", "出库类型", "IOType")
	c.AddManyToOne("department", "领用部门", "Department")
	c.AddBool("isCanceled", "是否冲红")

	c.AddFloat("num", "数量")
	c.AddText("batchCode", "批次号")
	c.AddFloat("batchPrice", "批次价格").SetDesc("本批次下该产品的平均价格，由于会出现无限不循环小数，所以这里是一个不准确的数值，在本批次数量不能清零的情况下，出库按照这个价格计算成本")
	c.AddFloat("cost", "总价值").SetDesc("该批次下的总价值，在清零时按照总价值 - 已出库数量 * 批次价格，计算成本")

	c.AddText("heapCode", "堆号").SetDesc("由于同一批次下，多个库位分裂而产生的唯一编码")
	c.AddText("pos", "库位号")

	c.AddText("applier", "需求者")
	c.AddText("usage", "用途")
	c.AddArt("note", "备注")

	c.AddText("createName", "经办人")

	c.AddCreateAt()
	c.AddCreateBy()

	c.Generate()
}

func IOType() {
	c := maker.CreateTable("IOType", "出入库类型", "wms")
	c.AddName()
	c.AddText("flag", "标识")
	c.AddBool("isAdd", "是否增项")
	c.LoadTree()
	c.LoadStatus()
	c.Generate()
}

func Department() {
	c := maker.CreateTable("Department", "部门", "wms")
	c.AddName()
	c.LoadTree()
	c.LoadDependence()
	c.Generate()
}
